<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        // 获取所有数据
        // $user=User::get();
        // 获取所有数据并分页
        $user=User::paginate(5);
        // 加载用户模板
       return view('user.index',compact('user'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function show(User $user)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        // 获取当前id的用户数据
        $user=User::find($id);
        //如果用户想要修改，那么判断他是否有权限
        //第一个参数是调用的权限策略的方法名称
        //第二个参数是需要操作的用户数据对象
        $this->authorize('update',$user);
      return view('user.edit',compact('user'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request,$id)
    {
        // 获取当前id的用户数据
        $user = User::find($id);
        //接收post数据
        $post = $request->all();
        // 更改用户名
        $user->name = $post['name'];
        //判断密码是否填写,如果填写了密码,将用户的密码修改
        if ($post['password']){
            $user->password = bcrypt($post['password']);
        }
        //将用户数据保存
        $user->save();
        //设置闪存信息并返回
        session()->flash('success','资料修改成功');
        // 返回跳转
        return redirect()->route('user.index');

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //通过当前id找到所需要的用户信息
        $user = User::find($id);
        //用权限策略进行是否删除操作的判断
        $this->authorize('delete',$user);
        // 将对应数据删除
        //删除方法1:使用找到的数据对象调用delete方法删除
        // $user->delete();
        //  删除方法2：直接使用模型调用destroy(id)方法，需要传递删除数据的主键ID
         User::destroy($id);
         //设置闪存信息并跳转
        session()->flash('success','用户数据删除成功');
        return redirect()->route('user.index');
    }
}
